package com.chat.common.user.domain.entity;

import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.util.Objects;
import java.util.Optional;

@Data
public class IpInfo implements Serializable {

    //创建时ip
    private String createIp;

    //注册的ip详情
    private IpDetail createDetail;

    //最新登录的ip
    private String updateIp;

    //最新登录的ip详情
    private IpDetail updateDetail;


    public void refreshIp(String ip) {
        if (StringUtils.isBlank(ip)) {
            return;
        }
        if(StringUtils.isBlank(createIp)){
            createIp=ip;
        }
        updateIp=ip;
    }

    public String needRefreshIp() {
      boolean notNeedRefresh=  Optional.ofNullable(updateDetail)
                .map(IpDetail::getIp)
                .filter(ip-> Objects.equals(ip, updateIp))
                .isPresent();
      return notNeedRefresh?null:updateIp;
    }

    public void refreshIpDetail(IpDetail ipDetail) {
        //如果创建ip等于 返回详细信息中的ip 说明这个detail就是创建ip的detail 最新ip 亦是如此
        if(Objects.equals(createIp, ipDetail.getIp())){
            createDetail=ipDetail;
        }
        if(Objects.equals(updateIp, ipDetail.getIp())){
            updateDetail=ipDetail;
        }
    }
}
